package cn.seaboot.commons.http;

/**
 * RequestMethod 类定义了HTTP请求中常用的方法（也称为"动作"或"命令"）。
 * 这些方法用于指定客户端希望服务器执行的操作类型。
 *
 * @author Mr.css
 * @version 2025-02-14 10:38
 */
public class RequestMethod {

    /**
     * GET 方法请求服务器发送请求所指定的资源。
     * GET 方法是安全的（不会改变服务器上的数据），并且是可缓存的（响应可以被缓存）。
     */
    public static final String GET = "GET";

    /**
     * HEAD 方法与 GET 方法类似，但服务器在响应中只返回头部信息，不返回实际内容。
     * 常用于检查资源的元数据（如内容类型或修改日期）。
     */
    public static final String HEAD = "HEAD";

    /**
     * POST 方法用于向指定资源提交数据，请求服务器进行处理（例如，提交表单或上传文件）。
     * POST 方法可能会导致新的资源的创建或已有资源的修改。
     */
    public static final String POST = "POST";

    /**
     * PUT 方法用于向指定资源位置上传其最新内容。
     * PUT 方法通常用于更新资源或创建资源（如果资源不存在）。
     */
    public static final String PUT = "PUT";

    /**
     * DELETE 方法请求服务器删除请求URI所标识的资源。
     */
    public static final String DELETE = "DELETE";

    /**
     * TRACE 方法沿路径逐跳返回收到的请求，主要用于测试和诊断。
     */
    public static final String TRACE = "TRACE";

    /**
     * CONNECT 方法将请求连接转换为透明的 TCP/IP 隧道，通常用于 HTTPS 代理。
     */
    public static final String CONNECT = "CONNECT";

    /**
     * OPTIONS 方法用于描述目标资源的通信选项。
     * 服务器会返回目标资源所支持的HTTP请求方法。
     */
    public static final String OPTIONS = "OPTIONS";

    /**
     * PATCH 方法用于对资源进行部分修改。
     * 与 PUT 方法不同，PATCH 方法通常只包含需要修改的字段。
     */
    public static final String PATCH = "PATCH";

    /**
     * PROPFIND 方法用于检索资源的属性。
     * 主要用于WebDAV（基于HTTP的远程文件访问协议）。
     */
    public static final String PROPFIND = "PROPFIND";

    /**
     * PROPPATCH 方法用于设置或删除一个或多个资源的属性。
     * 也主要用于WebDAV。
     */
    public static final String PROPPATCH = "PROPPATCH";
}